Пример реализации двух разных операторов инкремента:
// Перегрузка префиксного оператора ++
public static MyInt operator ++(MyInt a)
{
a.value++; // Увеличиваем значение
return a; // Возвращаем измененный объект
} // Перегрузка постфиксного оператора++
public static MyInt operator ++(MyInt a, int unused)
{
MyInt temp = new MyInt(a.value); // Создаем копию текущего объекта
a.value++; // Увеличиваем значение return temp; // Возвращаем копию старого объекта
}
То есть, в случае префиксного, происходит имплементация, и возврат себя же
В случае постфиксного происходит копирование, имплементация, а возврат копии.